知らなくても困らないけど、知ると楽しいAWS Lambdaの裏側の世界 #devio2021
CX事業本部の岩田です。
クラスメソッドオンラインイベントのDevelopersIO 2021 Decadeで「知らなくても困らないけど、知ると楽しいAWS Lambdaの裏側の世界」というテーマでお話ししましたので、内容を簡単にご紹介します。
動画
スライド
内容
今回お話した内容は以下の4つのブログの内容をマージして簡略化したものになります。もし詳細な内容に興味があれば以下のブログも読んでみて下さい。
- 2019年VPC Lambdaが高速に!! AWS Lambdaの内部構造に迫るセッション 「SRV409 A Serverless Journey: AWS Lambda Under the Hood」 #reinvent
- Lambdaの内部アーキテクチャ教えます!A serverless journey: AWS Lambda under the hood #SVS405 #reinvent
- Lambdaの裏側を知りたい人にオススメ Firecrackerに関する論文「Firecracker: Lightweight Virtualization for Serverless Applications」の紹介
- [セッションレポート]Lambdaのコンテナイメージ管理の裏側に詳しくなれるセッション SVS404 Deep dive into AWS Lambda security: Function isolation #reinvent
Lambda実行環境のアーキテクチャについて
Lambdaの実行環境は以下のようなレイヤ構成になっています。
この中で「ハイパーバイザ」のレイヤにあたるのがAWSが開発したOSSのソフトウェアFirecrackerです。クラウドベンダーがCaaSやFaaSのサービスを提供するために最適化されたVMMで
- 仮想マシンが非常に高速に起動する
- オーバーヘッドが小さい
といった特徴があります。Lambdaというサービスが提供開始された当初はFirecrackerというソフトウェアは存在しませんでしたが、Lambdaというサービスの中で実行される各ユーザーのワークロードの
- 環境分離
- パフォーマンス向上
- 集約率の向上
といったことをモチベーションにAWSはFIrecrackerを開発しました。
以前のLambda実行環境はEC2モデルと呼ばれるレイヤ構成が利用されていましたが、Firecerackerが開発されたことで、順次Fireacrackeモデルと呼ばれる前述のレイヤ構成へと移行されました
同期実行
Lambdaの同期実行に利用されるコンポーネントに関する紹介です。同期実行は
- Front End
- Counting Service
- Worker Manager
- Worker
- Placement Service
- MicroManager
といったコンポーネントが強調することで実現されています。re:InventのセッションではMicroManagerというコンポーネントについては触れられていなかったのですが、Firecrackerの論文でMicroManagerに関する記載があったので、同期実行の裏で稼働するコンポーネントとして紹介しています。
非同期実行
非同期実行も最終的には同期実行のシーケンスと同じになりますが、同期実行に至るまでに諸々のコンポーネントが協調しています。
- Poller
- State Manager
- Stream Tracker
- Leasing Service
というコンポーネントに加え、SQSが重要な役割を果たしています。
AWSが公式に名言している資料は見つけられなかったのですが、re:Inventのスライドを見る限りDynamoDBも利用しているようです。
Lambdaのコンテナイメージ対応について
re:Invent2020で発表された新機能としてLambdaのパッケージ形式としてOCI準拠のコンテナイメージがサポートされたという機能があります。この機能の裏側で、Lambdaの実行基盤にどのような変更が発生したのか?コンテナイメージ形式のパッケージのパフォーマンスを最適化するためにどういった工夫がされているのか?といった点について解説しています。
Sparse filesystemと呼ばれるコンポーネントと3種のキャッシュを利用することでIOを最適化しているそうです。
まとめ
本セッションの元ネタとなったブログ等の紹介です。Lambdaの裏側を解説するようなセッションは、いつもLambdaチームのシニアプリンシパルエンジニアであるMarc Brookerさんがスピーカーを務めるので、詳しく知りたい方はMarcさんがスピーカーのセッションを追いかけるのがオススメです。
参考資料
Youtube動画の概要欄でも紹介していますが、以下の4つの動画を見ていただくと色々と理解が深まります。興味があればご参照下さい。